/****************************************************************************
 This is my private libary!------------THE HEAD FILE
 AUTHOR: sangay
 DATE: 2/14/2012
*****************************************************************************/

#ifndef XGFHEAD
#define XGFHEAD

/* 定义布尔类型及其取值范围*/
typedef BOOL int;
#define False 0
#define True (! False)

/* 定义字符串结束符  */
#define NULLCHAR '\0'

/****************************************************************************
 判断x是否是0到9中的任一个数字.如果是，则返回真（True）；否则，返回假（False）
 ****************************************************************************/
BOOL is_number(x);

/****************************************************************************
 判断x是否是1到9中的任一个数字.如果是，则返回真（True）；否则，返回假（False）
 ****************************************************************************/
BOOL is_nozeronum(x);

/****************************************************************************
 判断x是否是一个八进制数字.如果是，则返回真（True）；否则，返回假（False）
 ****************************************************************************/
BOOL is_oct(x);

/****************************************************************************
 判断x是否是一个十六进制数字.如果是，则返回真（True）；否则，返回假（False）
 ****************************************************************************/
BOOL is_hex(x);

/****************************************************************************
 判断x是否是一个二进制数字.如果是，则返回真（True）；否则，返回假（False）
 ****************************************************************************/
BOOL is_bin(x);

/****************************************************************************
 判断x是否是a到z的任一小写字母.如果是，则返回真（True）；否则，返回假（False）
 ****************************************************************************/
BOOL is_atoz(x);

/****************************************************************************
 判断x是否是A到Z的任一大写字母.如果是，则返回真（True）；否则，返回假（False）
 ****************************************************************************/
BOOL is_AtoZ(x);

/****************************************************************************
 判断x是否是a到z或A到Z的任一大小写字母。
 如果是，则返回真（True）；否则，返回假（False）
 ****************************************************************************/
BOOL is_atoZ(x);

/****************************************************************************
 判断x是否是0到9的任一数字，或者a到z的任一小写字母，或者A到Z的任一大写字母。
 如果是，则返回真（True）；否则，返回假（False）。
 ****************************************************************************/
BOOL is_alnum(x);

/****************************************************************************
 判断x是否是空格或水平制表符.如果是，则返回真（True）；否则，返回假（False）
 ****************************************************************************/
BOOL is_blank(x);

/****************************************************************************
 判断x是否是回车符.如果是，则返回真（True）；否则，返回假（False）
 ****************************************************************************/
BOOL is_enter(x);

/****************************************************************************
 判断x是否是换行符.如果是，则返回真（True）；否则，返回假（False）
 ****************************************************************************/
BOOL is_newline(x);

/*****************************************************************************
  本函数是标准函数库<stdio.h>中的fgetc函数的增强版本。
  本函数从流stream中只读取第一个字符，然后把剩余的所有字符（包括  换行符）
  全部丢掉，接着刷新stream流缓冲区。
 *****************************************************************************/
int enfgetc(FILE * stream);

/*****************************************************************************
  本函数是标准函数库<stdio.h>中的fgets函数的增强版本。
  本函数的语义与fgets的语义相同，除了永远也不会保存换行符，即当输入是由于遇到
  换行符而终止时，这个换行符被丢弃，而不会存储在要保存的数组中，也不会停留在
  缓冲区中。
 *****************************************************************************/
char * enfgets(char *buffer, int n, FILE *stream);

/*****************************************************************************
  本函数是标准函数库<stdio.h>中的strncpy函数的增强版本。
  本函数的语义与strncpy函数的语义相基本相同。本函数与strncpy的差别：如果src中
  的字符个数大于n，则除了像strncpy一样拷贝前n个字符外，还会在该n个字符后添加
  一个结束符，即实际拷贝了n+1个字符。
 *****************************************************************************/
char * enstrncpy(char *des, const char *src, size_t n);


#endif
